package com.help10000.rms.mvp.presenter

import android.util.Log
import com.amir.common.api.CustomObserver
import com.amir.common.beans.BaseResult
import com.amir.common.mvp.model.Model
import com.amir.common.utils.Constant
import com.amir.common.utils.SPUtils
import com.amir.common.utils.Utils
import com.help10000.rms.config.globalData
import com.help10000.rms.utils.LocationManager
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class LocationPresenter {
    // 自定义协程作用域，绑定生命周期（Job用于取消）
    private val coroutineScope = CoroutineScope(Dispatchers.Main + Job())
    fun reportLocation() {
        CoroutineScope(Dispatchers.IO).launch {
            val (lat, lng) = LocationManager.getLocation(Utils.getContext())
            Log.d("获取Location定位", "获取到经纬度：lat=$lat, lng=$lng")
            val accessToken = SPUtils.getString(Constant.AccessToken)
            if (accessToken != null) {
                val latitude = lat
                val longitude = lng
                val accuracy = SPUtils.getFloat(Constant.Accuracy)
                val deviceId = globalData.deviceId
                val reportLocation = Model.getServer()
                    .reportLocation(accessToken, deviceId, latitude, longitude, accuracy)
                withContext(Dispatchers.Main) {
                    Model.getObservable(reportLocation, object : CustomObserver<BaseResult>(null) {
                        override fun success(t: BaseResult) {
                            // LogUtils.E(t)
                        }
                    })
                }
            }
        }
    }
    // 在Presenter销毁时调用，取消所有协程
    fun onDestroy() {
        coroutineScope.cancel()
    }
}